#ifndef TCPCLIENT_H
#define TCPCLIENT_H

#include "client.hpp"

class TcpClient
{
public:
    // tcpclient初始化
    TcpClient(string ip, uint16_t port);
    // tcpclient启动
    void start();
    // 读取对端发送的数据的线程函数
    static void *readTaskHandler(void *arg);
    // tcpclient析构
    ~TcpClient();
    // 对外成员获取接口
    int getSock()
    {
        return sock;
    }
    atomic_bool &getLoginState()
    {
        return loginstate;
    }
    Client &getClient()
    {
        return client;
    }
    sem_t &getSem()
    {
        return rwsem;
    }

private:
    string ip;              // 服务端ip
    uint16_t port;          // 服务端port
    int sock;               // socket文件
    sem_t rwsem;            // 读写线程之间的通信
    atomic_bool loginstate; // 登录状态
    Client client;          // 用户信息
};

#endif